package com.ft.core.enums;

import com.alibaba.fastjson.parser.ParserConfig;
import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;

import java.lang.reflect.Type;

/**
 * @copyright (C), 2015-2019, XXX有限公司
 * @fileName: EnumIntValueParserConfig
 * @author: 李阳
 * @date: 2019/6/28 2:52
 * @description: 替换fastjson默认的获取反序列化器的方法
 * @history: <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
public class EnumIntValueParserConfig extends ParserConfig {

    public EnumIntValueParserConfig() {
        ParserConfig.global = this;
    }

    @Override
    public ObjectDeserializer getDeserializer(Type type) {
        if (type instanceof Class<?>) {
            return getDeserializer((Class<?>) type, type);
        }
        return super.getDeserializer(type);
    }

    @Override
    public ObjectDeserializer getDeserializer(Class<?> clazz, Type type) {
        if (clazz.isEnum() && IEnumIntValue.class.isAssignableFrom(clazz)) {
            //这里替换了原来的反序列化器。
            return new EnumIntValueDeserializer(clazz);
        }
        return super.getDeserializer(clazz, type);

    }
}
